package com.project.system.domain.entity;

import com.project.common.domain.po.DbBase;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * @author : [chg]
 * @className : EmployeeAttendanceSummary
 * @description : 员工考勤汇总表实体
 * @createTime : [2025/7/9 11:30]
 */
@Entity
@Data
@Table(name = "tb_employee_attendance_summary")
@org.hibernate.annotations.Table(appliesTo = "tb_employee_attendance_summary", comment = "员工考勤汇总表")
public class HrEmployeeAttendanceSummary extends DbBase {
    @Column(columnDefinition = "bigint DEFAULT NULL COMMENT '用户ID'")
    private Long userId; // 用户ID
    
    @Column(columnDefinition = "date DEFAULT NULL COMMENT '日期'")
    private LocalDate date; // 日期
    
    @Column(columnDefinition = "datetime DEFAULT NULL COMMENT '早上上班时间'")
    private LocalDateTime morningStartTime; // 早上上班时间
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '早上上班状态（0-正常,1-迟到,2-漏打,3-请假）'")
    private Integer morningStartStatus; // 早上上班状态（0-正常,1-迟到,2-漏打,3-请假）
    
    @Column(columnDefinition = "datetime DEFAULT NULL COMMENT '早上下班时间'")
    private LocalDateTime morningEndTime; // 早上下班时间
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '早上下班状态（0-正常,1-早退,2-漏打,3-请假）'")
    private Integer morningEndStatus; // 早上下班状态（0-正常,1-早退,2-漏打,3-请假）
    
    @Column(columnDefinition = "datetime DEFAULT NULL COMMENT '中午上班时间'")
    private LocalDateTime noonStartTime; // 中午上班时间
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '中午上班状态（0-正常,1-迟到,2-漏打,3-请假）'")
    private Integer noonStartStatus; // 中午上班状态（0-正常,1-迟到,2-漏打,3-请假）
    
    @Column(columnDefinition = "datetime DEFAULT NULL COMMENT '下午下班时间'")
    private LocalDateTime afternoonEndTime; // 下午下班时间
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '下午下班状态（0-正常,1-早退,2-漏打,3-请假）'")
    private Integer afternoonEndStatus; // 下午下班状态（0-正常,1-早退,2-漏打,3-请假）
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '是否加班（0-否,1-是）'")
    private Integer isOvertime; // 是否加班（0-否,1-是）
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '加班时长分钟'")
    private Integer overtimeMinutes; // 加班时长分钟

    //是否节假日
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '是否节假日（0-否,1-是）'")
    private Integer isHoliday;
    //是否周末
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '是否周末（0-否,1-是）'")
    private Integer isWeekend;
    //节假日补贴
    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '节假日补贴'")
    private BigDecimal holidaySubsidy;
    //加班补贴
    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '加班补贴'")
    private BigDecimal overtimeSubsidy;

    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '上班总时间（分钟）'")
    private BigDecimal officeHours;

    @Column(columnDefinition = "bigint DEFAULT NULL COMMENT '当前计算薪资ID'")
    private Long salaryId; // 薪资ID

    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '当前日新'")
    private BigDecimal dailySalary;

    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '薪资节假日补贴'")
    private BigDecimal salaryHolidaySubsidy;

    @Column(columnDefinition = "decimal(10,2) DEFAULT NULL COMMENT '应发工资'")
    private BigDecimal shouldSalary;

    @Column(columnDefinition = "int DEFAULT 0 COMMENT '状态（0-未发，1-已发）'")
    private Integer status; // 状态
}